#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'用户'
import hmac
import random


def get_md5(password, key):
    return hmac.new(password.encode('utf-8'), key.encode('utf-8'), digestmod='MD5').hexdigest()


class User(object):
    def __init__(self, name, password):
        self.name = name
        self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])
        self.password = get_md5(password, self.salt)


db = {
    'michael': User('michael', '123456'),
    'bob': User('bob', 'abc999'),
    'alice': User('alice', 'alice2008')
}


def login(name, password):
    user = db[name]
    return get_md5(password, user.salt) == user.password


# 测试:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')
